package cn.zcx;

import java.util.*;

/**
 * description:Lambda 表达式，也可称为闭包，它是推动 Java 8 发布的最重要新特性。
 *
 * Lambda 允许把函数作为一个方法的参数（函数作为参数传递进方法中）。
 *
 * 使用 Lambda 表达式可以使代码变的更加简洁紧凑，有效避免内部匿名类出现。
 * author:zcx
 * lenovo
 * 时间：2022.01.25.21.20
 */
public class Lab1 {
    public static void main(String[] args) {
        Integer[] num = new Integer[] { 1, 6, 2, 5, 10, 4 };
        System.out.println(Arrays.toString(num));

        Arrays.sort(num);
        System.out.println(Arrays.toString(num));

        //Arrays.sort(num, (a, b) -> a - b);
        Arrays.sort(num,new Comparator<Integer>() {
            public int compare(Integer a, Integer b) {
                return a-b;
            }
        });

        System.out.println(Arrays.toString(num));

        Arrays.sort(num, (a, b) -> b - a);
		/*
		Arrays.sort(num,new Comparator<Integer>() {
			public int compare(Integer a, Integer b) {
				return a-b;
			}
		}.reversed());
		*/
        System.out.println(Arrays.toString(num));

        //乱序
        Random rand = new Random();
        Arrays.sort(num, (a, b) -> rand.nextBoolean() ? -1 : 1);
        Arrays.sort(num, (a, b) -> rand.nextBoolean() ? -1 : 1);
        Arrays.sort(num, (a, b) -> rand.nextBoolean() ? -1 : 1);
        Arrays.sort(num, (a, b) -> rand.nextBoolean() ? -1 : 1);
        System.out.println(Arrays.toString(num));

        //Array 转换为 List 使用 shuffle打乱顺序，并转换为Array
        var list = new ArrayList<>(Arrays.stream(num).toList());
        Collections.shuffle(list);
        list.toArray(num);
        System.out.println(Arrays.toString(num));
    }
}
